草庐IT

Python Django 模板 : Iterate Through List

全部标签

c++ - sizeof 运算符是否会导致模板参数推导发生?

我知道sizeof运算符不会评估其表达式参数来获得答案。但它不是模板的非扣除上下文之一。所以我想知道它如何与模板交互,特别是模板参数推导。例如,以下内容摘自C++模板:完整指南:templateclassIsClassT{private:typedefcharOne;typedefstruct{chara[2];}Two;templatestaticOnetest(intC::*);templatestaticTwotest(...);public:enum{Yes=sizeof(IsClassT::test(0))==1};enum{No=!Yes};};这个类型函数决定了,正如它的

c++ - 检查类模板是否已实例化?

有没有一种简单的方法可以查看某个类是否已在翻译单元中实例化?C++Primer中的练习询问每个标记语句,是否发生实例化:templateclassStack{};voidf1(Stack);//(a)classExercise{Stack&rsd;//(b)Stacksi;//(c)};intmain(){Stack*sc;//(d)f1(*sc);//(e)intiObj=sizeof(Stack);//(f)}我不确定如何实际检查我的答案。我想也许我可以为每个类类型使用显式实例化(例如externtemplateclassStack),然后在程序中永远不会有相应的显式实例化定义。这

c++ - 参数必须是另一个模板类的模板类

好吧,这就是我要实现的目标。我有一个这样的结构:templatestructs{templatestructr{//whatever};};现在我想再写一个模板化结构:templatestructq{//};模板应该接受structr的特化我想访问此实例化的模板参数。为了让自己更清楚:我希望能够写出这样的东西:usingsome_specialisation_of_q=q::r>;some_specialisation_of_qvarname;并且我希望能够访问T1,T2,T3,5,6,7(或传递给专门化s和r的任何其他模板参数)在q的定义中.我的第一次尝试是这样的:templatet

c++ - 基于非类型模板参数的重载

我们熟悉基于函数参数的重载。但是为什么我们不能基于非类型模板参数进行重载呢?有了这样的重载,您就不必为了重载目的而添加额外的函数参数,这可能会对运行时性能产生负面影响。唉,下面的代码无法编译:templatevoidfunc(){}templatevoidfunc(){}intmain(){func();}产生的错误信息是error:callofoverloaded'func()'isambiguousfunc();^note:candidate:voidfunc()[withbool=false]voidfunc(){}^note:candidate:voidfunc()[withi

c++ - 类模板多重继承和函数重载

为什么下面main中对waitForEvent的函数调用不明确?#includestructEvent1{charc1[1];};structEvent2{charc2[2];};templatestructEventSource{voidwaitForEvent(Evente){std::coutEvent1Source;typedefEventSourceEvent2Source;structEvent12Source:publicEvent1Source,publicEvent2Source{};intmain(){Event12Sourcesource;source.waitF

可变参数宏中的 C++ 可变参数模板函数

我目前正在开展一个项目,需要简化现有系统。Wihtout进入细节问题是我得到了一些函数指针(来自类型:void*),我需要从它创建一个函数(=创建一个带有签名的函数)。所以我的方法是创建以下可变参数模板函数:templateReturnType(*GetFunction(void*func,Params...))(Params...){returnreinterpret_cast(func);}现在我需要一种方法来创建所需的函数:#defineDECLARE_PARAMS(...)__VA_ARGS__#defineDefine_Function(returnType,fname,Pa

C++ 调用显式模板构造函数

你能告诉我如何显式调用模板构造函数(在初始化列表中)吗?例如:structT{templateT();};structU{U():t(){}//doesnotworkTt;};谢谢 最佳答案 这是不可能的。该标准在14.8.1/7也有关于此的注释[Note:becausetheexplicittemplateargumentlistfollowsthefunctiontemplatename,andbecauseconversionmemberfunctiontemplatesandconstructormemberfunction

c++ - 在模板中引用模板化函数

我希望能够为模板中的模板化函数命名。由于可以使用“模板模板”语法命名模板类,并且可以使用“函数指针”语法命名函数,所以我想知道是否有命名函数的语法(或提案)在模板中而不指定模板。templatestructA{t_typevalue;};templateclasst_type>structB{t_typevalue;};templateconstexprintC(intvalue){returnvalue+added;}templateconstexprintD(intvalue){returnfunction(value);}//GOAL:Templateargumentreferr

c++ - 如何动态转换模板类

我正在尝试围绕以下类模板编写API:templateclassMyClass{public:Afoo;Bbar;MyClass();MyClass(Ain1,Bin2){foo=in1;bar=in2;}voidoperator=(MyClassin){foo=in.foo;bar=in.bar;}};作为此API的一部分,我希望实现者能够在不同类型的MyClass之间动态转换.为了实现这一点,我编写了以下函数:templateMyClassoperatorMyClass(MyClassin){MyClassout((C)in.foo,(D)in.bar);returnout;}这段代

c++ - 指向多次实例化的函数模板的指针

我有一个与函数模板相关的简单问题。假设我有一个header,其中包含一个带有名为f的模板方法的类:classtest{public:templatevoidf(Tt){}};如果此header包含在多个.cpp文件中,并且这些.cpp中的每一个都使用相同的类型(假设为int)调用f,我可以在其他地方获取函数的指针吗代码?考虑到可能有多个定义,链接器会只保留一个吗? 最佳答案 Ifthisheaderisincludedinseveral.cppfiles,andeachofthese.cppcallsfwiththesametype